//方案三: 组合式继承

//结合原型链继承和借用构造函数继承的方法
//特点
/*
* 1.子类实例可以使用父类的私有属性和方法
* 2.父类私有的属性和方法也会变成子类实例私有的属性和方法
* 3.子类实例父类公有的属性和方法
* 4.子类的原型链上会存在一份多余的父类私有属性
* */

//父类构造函数
function Parent(x){
    this.x = x;
    this.sayHello = function (){
        console.log("sayHello")
    }
}
//父类原型
Parent.prototype.getX = function (){
    console.log("getX",this.x)
}

//子类构造函数
function Child(y,x){
    Parent.call(this,666)
    this.y = y;
}
Child.prototype = new Parent(100);
Child.prototype.constructor = Child;
Child.prototype.getY = function (){
    console.log("getY",this.y)
}
//子类实例
let c1 = new Child(200,666);